# 1、读取图像：cv2.imread(path, mode)
# path 要读取得图像
# mode 读取图像的方式标志
# cv.IMREAD_COLOR： 加载彩色图像。任何图像的透明度都会被忽视。它是默认标志。
# cv.IMREAD_GRAYSCALE：以灰度模式加载图像
# cv.IMREAD_UNCHANGED：加载图像，包括alpha通道
# 注意：以上三个标志，可以简单的传递整数1、0、-1
# 2、显示图像：cv2.imshow(winname, mat)
# winname：显示图像窗口名称，以字符串类型显示
# mat：要加载的图像
# 3、等待操作：cv.waitKey()
# cv.waitKey()是一个键盘绑定函数。其参数是以毫秒为单位的时间。该函数等待任何键盘事件指定的毫秒。如果您在这段时间内按下任何键，然后返回按键的 ASCII 码，程序将继续运行。
# 如果 0 被传递，它将无限期地等待一次敲击键。它也可以设置为检测特定的按键，例如，如果按下键 a 等(这里是指在显示的窗口上操作)
# 4、关闭窗口：cv.destroyAllWindows()
# cv.destroyAllWindows()只会破坏我们创建的所有窗口。
# 如果要销毁任何特定的窗口，请使用函数 cv.destroyWindow()在其中传递确切的窗口名称作为参数。

import cv2

# 读取图像
img1 = cv2.imread("image.jpg")
img2 = cv2.imread("test.jpg")
img3 = cv2.imread("test.png")

# 显示图像在窗口
cv2.imshow("Image 1", img1)
cv2.imshow("Image 2", img2)
cv2.imshow("Image 3", img3)

# 等待用户关闭窗口
cv2.waitKey(0)  # 0代表等待足够的时间
cv2.destroyAllWindows()

# 读取图像
img4 = cv2.imread("test.jpg", cv2.IMREAD_GRAYSCALE)
img5 = cv2.imread("test.jpg", 0)

# 显示图像在窗口
cv2.imshow("Image 4", img4)
cv2.imshow("GRAYSCALE", img5)

# 等待用户关闭窗口
cv2.waitKey(0)
cv2.destroyAllWindows()

# 指定窗口大小显示
img6 = cv2.imread("test.jpg")
# 设置新的图像大小
width = 500
height = 400
dim = (width, height)
# resize 图像
resized = cv2.resize(img6, dim, interpolation=cv2.INTER_LINEAR)
cv2.imshow("resize image", resized)
cv2.waitKey(0)
cv2.destroyAllWindows()

# 按原图比例缩小显示
img7 = cv2.imread("test.jpg")

# 获取图像的原始宽度和高度
original_width, original_height = img7.shape[1], img7.shape[0]

# 确定新高度和宽度，这里我们就以缩小到原来的一半为例
new_width = int(original_width / 2)
new_height = int(original_height / 2)

# 计算缩放比例
width_ratio = new_width / original_width
height_ratio = new_height / original_height

# 保持原始图像的宽高比并按比例缩放图像大小
img_resized = cv2.resize(img7, (new_width, new_height), interpolation=cv2.INTER_AREA)

cv2.imshow("Resized Image", img_resized)
cv2.waitKey(0)
cv2.destroyAllWindows()
